mirror of
https://github.com/EGroupware/egroupware.git
synced 2025-01-23 06:18:55 +01:00
making video position available and a couple of documentation updates
This commit is contained in:
parent
cf8f421c4d
commit
4dc120a6d2
@ -30,6 +30,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
||||
et2_core_arrayMgr;
|
||||
*/
|
||||
var et2_core_inheritance_1 = require("./et2_core_inheritance");
|
||||
var et2_core_arrayMgr_1 = require("./et2_core_arrayMgr");
|
||||
/**
|
||||
* The registry contains all XML tag names and the corresponding widget
|
||||
* constructor.
|
||||
@ -316,7 +317,7 @@ var et2_widget = /** @class */ (function (_super) {
|
||||
}
|
||||
}
|
||||
if (this.id && _id.indexOf('[') > -1 && this._children.length) {
|
||||
var ids = (new et2_arrayMgr()).explodeKey(_id);
|
||||
var ids = (new et2_core_arrayMgr_1.et2_arrayMgr()).explodeKey(_id);
|
||||
var widget = this;
|
||||
for (var i = 0; i < ids.length && widget !== null; i++) {
|
||||
widget = widget.getWidgetById(ids[i]);
|
||||
@ -526,7 +527,7 @@ var et2_widget = /** @class */ (function (_super) {
|
||||
}
|
||||
else {
|
||||
// Try the root, in case a namespace got missed
|
||||
var entry = modifications.getRoot().getEntry(_node.getAttribute("id"));
|
||||
entry = modifications.getRoot().getEntry(_node.getAttribute("id"));
|
||||
}
|
||||
}
|
||||
if (entry && entry.type && typeof entry.type === 'string') {
|
||||
|
@ -17,6 +17,7 @@
|
||||
*/
|
||||
|
||||
import {ClassWithAttributes} from './et2_core_inheritance';
|
||||
import {et2_arrayMgr, et2_readonlysArrayMgr} from "./et2_core_arrayMgr";
|
||||
|
||||
/**
|
||||
* The registry contains all XML tag names and the corresponding widget
|
||||
@ -527,7 +528,7 @@ export class et2_widget extends ClassWithAttributes
|
||||
// Check for modifications on legacy options here. Normal modifications
|
||||
// are handled in widget constructor, but it's too late for legacy options then
|
||||
if (_target.id && this.getArrayMgr("modifications").getEntry(_target.id)) {
|
||||
var mod = this.getArrayMgr("modifications").getEntry(_target.id);
|
||||
var mod : any = this.getArrayMgr("modifications").getEntry(_target.id);
|
||||
if (typeof mod.options != "undefined") attrValue = _attrsObj[i].value = mod.options;
|
||||
}
|
||||
// expand legacyOptions with content
|
||||
@ -652,14 +653,14 @@ export class et2_widget extends ClassWithAttributes
|
||||
var _nodeName = attributes["type"] = _node.getAttribute("type") ?
|
||||
_node.getAttribute("type") : _node.nodeName.toLowerCase();
|
||||
var readonly = attributes["readonly"] = this.getArrayMgr("readonlys") ?
|
||||
this.getArrayMgr("readonlys").isReadOnly(
|
||||
(<any>this.getArrayMgr("readonlys")).isReadOnly(
|
||||
_node.getAttribute("id"), _node.getAttribute("readonly"),
|
||||
typeof this.readonly !== 'undefined' ? this.readonly : this.options.readonly) : false;
|
||||
|
||||
// Check to see if modifications change type
|
||||
var modifications = this.getArrayMgr("modifications");
|
||||
if (modifications && _node.getAttribute("id")) {
|
||||
var entry = modifications.getEntry(_node.getAttribute("id"));
|
||||
var entry : any = modifications.getEntry(_node.getAttribute("id"));
|
||||
if (entry == null) {
|
||||
// Try again, but skip the fancy stuff
|
||||
// TODO: Figure out why the getEntry() call doesn't always work
|
||||
@ -668,7 +669,7 @@ export class et2_widget extends ClassWithAttributes
|
||||
this.egw().debug("warn", "getEntry(" + _node.getAttribute("id") + ") failed, but the data is there.", modifications, entry);
|
||||
} else {
|
||||
// Try the root, in case a namespace got missed
|
||||
var entry = modifications.getRoot().getEntry(_node.getAttribute("id"));
|
||||
entry = modifications.getRoot().getEntry(_node.getAttribute("id"));
|
||||
}
|
||||
}
|
||||
if (entry && entry.type && typeof entry.type === 'string') {
|
||||
@ -933,7 +934,7 @@ export class et2_widget extends ClassWithAttributes
|
||||
* @param {string} _part which array mgr to set
|
||||
* @param {object} _mgr
|
||||
*/
|
||||
setArrayMgr(_part : string, _mgr)
|
||||
setArrayMgr(_part : string, _mgr : et2_arrayMgr)
|
||||
{
|
||||
this._mgrs[_part] = _mgr;
|
||||
}
|
||||
@ -943,7 +944,7 @@ export class et2_widget extends ClassWithAttributes
|
||||
*
|
||||
* @param {string} managed_array_type name of array mgr to return
|
||||
*/
|
||||
getArrayMgr(managed_array_type : string)
|
||||
getArrayMgr(managed_array_type : string) : et2_arrayMgr | null
|
||||
{
|
||||
if (this._mgrs && typeof this._mgrs[managed_array_type] != "undefined") {
|
||||
return this._mgrs[managed_array_type];
|
||||
|
@ -229,5 +229,6 @@ var et2_template = /** @class */ (function (_super) {
|
||||
};
|
||||
return et2_template;
|
||||
}(et2_core_DOMWidget_1.et2_DOMWidget));
|
||||
exports.et2_template = et2_template;
|
||||
et2_core_widget_1.et2_register_widget(et2_template, ["template"]);
|
||||
//# sourceMappingURL=et2_widget_template.js.map
|
@ -26,7 +26,7 @@ import './et2_types';
|
||||
* exists. If yes, this template is removed from the DOM tree, copied and
|
||||
* inserted in place of this template.
|
||||
*/
|
||||
class et2_template extends et2_DOMWidget
|
||||
export class et2_template extends et2_DOMWidget
|
||||
{
|
||||
static readonly _attributes : any = {
|
||||
"template": {
|
||||
|
@ -134,6 +134,32 @@ var et2_video = /** @class */ (function (_super) {
|
||||
this.video.attr("poster", _url);
|
||||
}
|
||||
};
|
||||
/**
|
||||
* Seek to a time / position
|
||||
*
|
||||
* @param _vtime in seconds
|
||||
*/
|
||||
et2_video.prototype.seek_video = function (_vtime) {
|
||||
this.video[0].currentTime = _vtime;
|
||||
};
|
||||
/**
|
||||
* Play video
|
||||
*/
|
||||
et2_video.prototype.play_video = function () {
|
||||
return this.video[0].play();
|
||||
};
|
||||
/**
|
||||
* Pause video
|
||||
*/
|
||||
et2_video.prototype.pause_video = function () {
|
||||
this.video[0].pause();
|
||||
};
|
||||
/**
|
||||
* Get current video time / position in seconds
|
||||
*/
|
||||
et2_video.prototype.currentTime = function () {
|
||||
return this.video[0].currentTime;
|
||||
};
|
||||
et2_video._attributes = {
|
||||
"video_src": {
|
||||
"name": "Video",
|
||||
|
@ -94,7 +94,7 @@ export class et2_video extends et2_baseWidget implements et2_IDOMNode
|
||||
}
|
||||
};
|
||||
|
||||
video: JQuery = null;
|
||||
video: JQuery<HTMLVideoElement> = null;
|
||||
|
||||
constructor(_parent, _attrs? : WidgetConfig, _child? : object)
|
||||
{
|
||||
@ -189,5 +189,39 @@ export class et2_video extends et2_baseWidget implements et2_IDOMNode
|
||||
this.video.attr("poster", _url);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Seek to a time / position
|
||||
*
|
||||
* @param _vtime in seconds
|
||||
*/
|
||||
public seek_video(_vtime : number)
|
||||
{
|
||||
this.video[0].currentTime = _vtime;
|
||||
}
|
||||
|
||||
/**
|
||||
* Play video
|
||||
*/
|
||||
public play_video() : Promise<void>
|
||||
{
|
||||
return this.video[0].play();
|
||||
}
|
||||
|
||||
/**
|
||||
* Pause video
|
||||
*/
|
||||
public pause_video()
|
||||
{
|
||||
this.video[0].pause();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current video time / position in seconds
|
||||
*/
|
||||
public currentTime() : number
|
||||
{
|
||||
return this.video[0].currentTime;
|
||||
}
|
||||
}
|
||||
et2_register_widget(et2_video, ["video"]);
|
@ -15,6 +15,7 @@ require("jquery");
|
||||
require("jqueryui");
|
||||
require("../jsapi/egw_global");
|
||||
require("../etemplate/et2_types");
|
||||
var etemplate2_1 = require("../etemplate/etemplate2");
|
||||
/**
|
||||
* Common base class for application javascript
|
||||
* Each app should extend as needed.
|
||||
@ -287,7 +288,7 @@ var EgwApp = /** @class */ (function () {
|
||||
}
|
||||
// Try and find a nextmatch widget, and set its filters
|
||||
var nextmatched = false;
|
||||
var et2 = template ? etemplate2.getByTemplate(template) : etemplate2.getByApplication(this.appname);
|
||||
var et2 = template ? etemplate2_1.etemplate2.getByTemplate(template) : etemplate2_1.etemplate2.getByApplication(this.appname);
|
||||
for (var i = 0; i < et2.length; i++) {
|
||||
et2[i].widgetContainer.iterateOver(function (_widget) {
|
||||
// Firefox has trouble with spaces in search
|
||||
@ -336,7 +337,7 @@ var EgwApp = /** @class */ (function () {
|
||||
EgwApp.prototype.getState = function () {
|
||||
var state = {};
|
||||
// Try and find a nextmatch widget, and set its filters
|
||||
var et2 = etemplate2.getByApplication(this.appname);
|
||||
var et2 = etemplate2_1.etemplate2.getByApplication(this.appname);
|
||||
for (var i = 0; i < et2.length; i++) {
|
||||
et2[i].widgetContainer.iterateOver(function (_widget) {
|
||||
state = _widget.getValue();
|
||||
@ -437,7 +438,7 @@ var EgwApp = /** @class */ (function () {
|
||||
'validation_errors': this.et2.getArrayMgr('validation_errors').data
|
||||
};
|
||||
// etemplate2 object for view
|
||||
this.et2_view = new etemplate2(this.viewTemplate[0], false);
|
||||
this.et2_view = new etemplate2_1.etemplate2(this.viewTemplate[0], '');
|
||||
framework.pushState('view');
|
||||
if (templateName) {
|
||||
this.et2_view.load(this.appname + '.' + templateName, templateURL, data, typeof et2_callback == 'function' ? et2_callback : function () { }, app);
|
||||
@ -597,8 +598,8 @@ var EgwApp = /** @class */ (function () {
|
||||
*/
|
||||
EgwApp.prototype._refresh_fav_nm = function () {
|
||||
var self = this;
|
||||
if (etemplate2 && etemplate2.getByApplication) {
|
||||
var et2 = etemplate2.getByApplication(self.appname);
|
||||
if (etemplate2_1.etemplate2 && etemplate2_1.etemplate2.getByApplication) {
|
||||
var et2 = etemplate2_1.etemplate2.getByApplication(self.appname);
|
||||
for (var i = 0; i < et2.length; i++) {
|
||||
et2[i].widgetContainer.iterateOver(function (_widget) {
|
||||
_widget.stored_filters = _widget.load_favorites(self.appname);
|
||||
@ -1020,7 +1021,7 @@ var EgwApp = /** @class */ (function () {
|
||||
*/
|
||||
EgwApp.prototype.egwTutorial_init = function (div) {
|
||||
// et2 object
|
||||
var etemplate = new etemplate2(div, false);
|
||||
var etemplate = new etemplate2_1.etemplate2(div, '');
|
||||
var template = egw.webserverUrl + '/api/templates/default/egw_tutorial.xet?1';
|
||||
this.egwTutorialGetData().then(function (_data) {
|
||||
var lang = egw.preference('lang');
|
||||
@ -1062,7 +1063,7 @@ var EgwApp = /** @class */ (function () {
|
||||
* @param {string} _url
|
||||
*/
|
||||
EgwApp.prototype.tutorial_videoOnClick = function (_url) {
|
||||
var frame = etemplate2.getByApplication('api')[0].widgetContainer.getWidgetById('src');
|
||||
var frame = etemplate2_1.etemplate2.getByApplication('api')[0].widgetContainer.getWidgetById('src');
|
||||
if (frame) {
|
||||
frame.set_value(_url);
|
||||
}
|
||||
|
@ -14,6 +14,8 @@ import 'jquery';
|
||||
import 'jqueryui';
|
||||
import '../jsapi/egw_global';
|
||||
import '../etemplate/et2_types';
|
||||
import {etemplate2} from "../etemplate/etemplate2";
|
||||
import {et2_container} from "../etemplate/et2_core_baseWidget";
|
||||
|
||||
/**
|
||||
* Type for push-message
|
||||
@ -98,7 +100,7 @@ export abstract class EgwApp
|
||||
*
|
||||
* @var {et2_container}
|
||||
*/
|
||||
et2: any;
|
||||
et2: et2_container;
|
||||
|
||||
/**
|
||||
* Internal reference to egw client-side api object for current app and window
|
||||
@ -191,7 +193,7 @@ export abstract class EgwApp
|
||||
* @param {etemplate2} et2
|
||||
* @param {string} name template name
|
||||
*/
|
||||
et2_ready(et2, name : string)
|
||||
et2_ready(et2 : etemplate2, name : string)
|
||||
{
|
||||
if(this.et2 !== null)
|
||||
{
|
||||
@ -581,7 +583,7 @@ export abstract class EgwApp
|
||||
};
|
||||
|
||||
// etemplate2 object for view
|
||||
this.et2_view = new etemplate2 (this.viewTemplate[0], false);
|
||||
this.et2_view = new etemplate2 (this.viewTemplate[0], '');
|
||||
framework.pushState('view');
|
||||
if(templateName)
|
||||
{
|
||||
@ -1284,7 +1286,7 @@ export abstract class EgwApp
|
||||
egwTutorial_init(div)
|
||||
{
|
||||
// et2 object
|
||||
var etemplate = new etemplate2 (div, false);
|
||||
var etemplate = new etemplate2 (div, '');
|
||||
var template = egw.webserverUrl+'/api/templates/default/egw_tutorial.xet?1';
|
||||
|
||||
this.egwTutorialGetData().then(function(_data){
|
||||
|
2
api/js/jsapi/egw_global.d.ts
vendored
2
api/js/jsapi/egw_global.d.ts
vendored
@ -680,7 +680,7 @@ declare class JsonRequest
|
||||
*
|
||||
* @return {jqXHR} jQuery jqXHR request object
|
||||
*/
|
||||
sendRequest(async? : boolean|"keepalive", method? : "POST"|"GET", error? : Function)
|
||||
sendRequest(async? : boolean|"keepalive", method? : "POST"|"GET", error? : Function) : Promise<any>
|
||||
/**
|
||||
* Open websocket to push server (and keeps it open)
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user