ModelHandle/source/website/hashhandler.js

106 lines
2.1 KiB
JavaScript

import { CreateModelUrlParameters, CreateUrlParser } from '../engine/parameters/parameterlist.js';
export class HashHandler
{
constructor ()
{
this.skipNextEvent = false;
this.eventListener = null;
}
SetEventListener (eventListener)
{
this.eventListener = eventListener;
window.onhashchange = this.OnChange.bind (this);
}
SkipNextEventHandler ()
{
this.skipNextEvent = true;
}
HasHash ()
{
let hash = this.GetHash ();
return hash.length > 0;
}
ClearHash ()
{
this.SetHash ('');
}
GetModelFilesFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetModelUrls ();
}
SetModelFilesToHash (files)
{
let params = CreateModelUrlParameters (files);
this.SetHash (params);
}
GetCameraFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetCamera ();
}
GetProjectionModeFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetProjectionMode ();
}
GetBackgroundFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetBackgroundColor ();
}
GetEnvironmentSettingsFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetEnvironmentSettings ();
}
GetDefaultColorFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetDefaultColor ();
}
GetDefaultLineColorFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetDefaultLineColor ();
}
GetEdgeSettingsFromHash ()
{
let parser = CreateUrlParser (this.GetHash ());
return parser.GetEdgeSettings ();
}
GetHash ()
{
return window.location.hash.substring (1);
}
SetHash (hash)
{
window.location.hash = hash;
}
OnChange ()
{
if (this.skipNextEvent) {
this.skipNextEvent = false;
return;
}
this.eventListener ();
}
}