From 7e74a9a7e3d204c6c01e57ed0699166333935a08 Mon Sep 17 00:00:00 2001 From: Valentin Robert Date: Wed, 2 Mar 2016 16:16:10 -0800 Subject: [PATCH 1/2] definition files for w2ui --- w2ui/w2ui-tests.ts | 172 +++++++++++++++++++ w2ui/w2ui.d.ts | 403 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 575 insertions(+) create mode 100644 w2ui/w2ui-tests.ts create mode 100644 w2ui/w2ui.d.ts diff --git a/w2ui/w2ui-tests.ts b/w2ui/w2ui-tests.ts new file mode 100644 index 000000000..ba858cde5 --- /dev/null +++ b/w2ui/w2ui-tests.ts @@ -0,0 +1,172 @@ +/// + +$(function() { + + $('#myLayout').w2layout({ + name: 'myLayout', + panels: [ + { type: 'top', size: 60 }, + { type: 'left', size: 150, resizable: true }, + { type: 'right', size: 150, resizable: true } + ] + }); + + $('#myGrid').w2grid({ + name: 'myGrid', + columns: [ + { field: 'fname', caption: 'First Name', size: '30%' }, + { field: 'lname', caption: 'Last Name', size: '30%' }, + { field: 'email', caption: 'Email', size: '40%' }, + { field: 'sdate', caption: 'Start Date', size: '120px' }, + ], + records: [ + { recid: 1, fname: 'John', lname: 'Doe', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 2, fname: 'Stuart', lname: 'Motzart', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 3, fname: 'Jin', lname: 'Franson', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 4, fname: 'Susan', lname: 'Ottie', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 5, fname: 'Kelly', lname: 'Silver', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 6, fname: 'Francis', lname: 'Gatos', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 7, fname: 'Mark', lname: 'Welldo', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 8, fname: 'Thomas', lname: 'Bahh', email: 'jdoe@gmail.com', sdate: '4/3/2012' }, + { recid: 9, fname: 'Sergei', lname: 'Rachmaninov', email: 'jdoe@gmail.com', sdate: '4/3/2012' } + ] + }); + + $('#myToolbar').w2toolbar({ + name: 'myToolbar', + items: [ + { type: 'check', id: 'item1', caption: 'Check', img: 'icon-add', checked: true }, + { type: 'break' }, + { + type: 'menu', id: 'item2', caption: 'Drop Down', img: 'icon-folder', + items: [ + { text: 'Item 1', img: 'icon-page' }, + { text: 'Item 2', img: 'icon-page' }, + { text: 'Item 3', img: 'icon-page' } + ] + }, + { type: 'break' }, + { type: 'radio', id: 'item3', group: '1', caption: 'Radio 1', img: 'icon-page' }, + { type: 'radio', id: 'item4', group: '1', caption: 'Radio 2', img: 'icon-page' }, + { type: 'spacer' }, + { type: 'button', id: 'item5', caption: 'Item 5', img: 'icon-save' } + ] + }); + + $('#mySidebar').w2sidebar({ + name: 'mySidebar', + img: null, + nodes: [ + { + id: 'level-1', text: 'Level 1', img: 'icon-folder', expanded: true, + nodes: [ + { id: 'level-1-1', text: 'Level 1.1', img: 'icon-page' }, + { id: 'level-1-2', text: 'Level 1.2', img: 'icon-page' }, + { id: 'level-1-3', text: 'Level 1.3', img: 'icon-page' } + ] + }, + { + id: 'level-2', text: 'Level 2', img: 'icon-folder', + nodes: [ + { + id: 'level-2-1', text: 'Level 2.1', img: 'icon-folder', + nodes: [ + { id: 'level-2-1-1', text: 'Level 2.1.1', img: 'icon-page' }, + { id: 'level-2-1-2', text: 'Level 2.1.2', img: 'icon-page' }, + { id: 'level-2-1-3', text: 'Level 2.1.3', img: 'icon-page' } + ] + }, + { id: 'level-2-2', text: 'Level 2.2', img: 'icon-page' }, + { id: 'level-2-3', text: 'Level 2.3', img: 'icon-page' } + ] + }, + { + id: 'level-3', text: 'Level 3', img: 'icon-folder', + nodes: [ + { id: 'level-3-1', text: 'Level 3.1', img: 'icon-page' }, + { id: 'level-3-2', text: 'Level 3.2', img: 'icon-page' }, + { id: 'level-3-3', text: 'Level 3.3', img: 'icon-page' } + ] + } + ], + onClick: function(event: W2UI.W2Event) { + console.log(event.target); + } + }); + + $('#sidebar').w2sidebar({ + name: 'sidebar', + img: null, + nodes: [ + { + id: 'level-1', text: 'Level 1', img: 'icon-folder', expanded: true, + nodes: [{ id: 'level-1-1', text: 'Level 1.1', img: 'icon-page' }, + { id: 'level-1-2', text: 'Level 1.2', img: 'icon-page' }, + { id: 'level-1-3', text: 'Level 1.3', img: 'icon-page' } + ] + }, + { + id: 'level-2', text: 'Level 2', img: 'icon-folder', + nodes: [{ + id: 'level-2-1', text: 'Level 2.1', img: 'icon-folder', + nodes: [ + { id: 'level-2-1-1', text: 'Level 2.1.1', img: 'icon-page' }, + { id: 'level-2-1-2', text: 'Level 2.1.2', img: 'icon-page' }, + { id: 'level-2-1-3', text: 'Level 2.1.3', img: 'icon-page' } + ] + }, + { id: 'level-2-2', text: 'Level 2.2', img: 'icon-page' }, + { id: 'level-2-3', text: 'Level 2.3', img: 'icon-page' } + ] + }, + { + id: 'level-3', text: 'Level 3', img: 'icon-folder', + nodes: [{ id: 'level-3-1', text: 'Level 3.1', img: 'icon-page' }, + { id: 'level-3-2', text: 'Level 3.2', img: 'icon-page' }, + { id: 'level-3-3', text: 'Level 3.3', img: 'icon-page' } + ] + } + ], + onClick: function(id: string, data: W2UI.W2Event) { + console.log(id); + } + }); + + $('#myTabs').w2tabs({ + name: 'myTabs', + active: 'tab1', + tabs: [ + { id: 'tab1', caption: 'Tab 1' }, + { id: 'tab2', caption: 'Tab 2' }, + { id: 'tab3', caption: 'Tab 3' }, + { id: 'tab4', caption: 'Tab 4' } + ], + onClick: function(event: W2UI.W2Event) { + $('#myTabsContent').html(event.target); + } + }); + + $('#myForm').w2form({ + name: 'myForm', + fields: [ + { name: 'first_name', type: 'text', required: true }, + { name: 'last_name', type: 'text', required: true }, + { name: 'comments', type: 'text' } + ], + actions: { + reset: function() { + this.clear(); + }, + save: function() { + this.save(); + } + } + }); + + w2popup.open({ + title: 'Popup Title HTML', + body: 'Body HTML', + buttons: 'Buttons HTML' + }); + +}); diff --git a/w2ui/w2ui.d.ts b/w2ui/w2ui.d.ts new file mode 100644 index 000000000..ef7e88c17 --- /dev/null +++ b/w2ui/w2ui.d.ts @@ -0,0 +1,403 @@ +// Type definitions for w2ui 1.4.3 +// Project: http://w2ui.com/ +// Definitions by: Valentin Robert +// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped + +/// + +interface JQuery { + w2layout(options: Object): W2UI.W2Layout; + w2grid(options: Object): W2UI.W2Grid; + w2toolbar(options: Object): W2UI.W2Toolbar; + w2sidebar(options: Object): W2UI.W2Sidebar; + w2tabs(options: Object): W2UI.W2Tabs; + w2form(options: Object): W2UI.W2Form; + w2popup(options: Object): W2UI.W2Popup; +} + +declare var w2popup: W2UI.W2Popup +declare var w2ui: W2UI.W2UI + +declare module W2UI { + + interface W2Event { + target: string; + } + + type W2EventHandler = ((e: W2Event) => void) | ((id: string, e: W2Event) => void) + + /* Primitives (first alphabetically, then by documentation order) */ + + interface W2Item { + checked?: boolean; + caption?: string; + group?: string; + id?: string; + img?: string; + items?: W2Item[]; + onClick?: Function; + text?: string; + type?: string; + } + + type W2Object = W2Layout | W2Grid | W2Toolbar | W2Sidebar | W2Tabs | W2Form | W2Popup + + interface W2Panel { + content?: string | JQuery; + hidden?: boolean; + overflow?: string; + resizable?: boolean; + size?: number | string; + style?: string; + title?: string; + tabs?: W2Tabs; + type?: string; + } + + interface W2Tab { + caption?: string; + id?: string; + } + + interface W2UI { + // morally, [s: string]: T; + [s: string]: any; + } + + interface W2Common { + box: HTMLElement; + handlers: Function[]; + name: string; + style: string; + destroy(): void; + off(type: string | Object, handler?: Function): void; + on(type: string | Object, handler?: Function): void; + refresh(id?: string): number; + render(box?: Object): number; + resize(): number; + trigger(eventData: Object): Object; + } + + interface W2Layout extends W2Common { + padding: number; + panels: W2Panel[]; + resizer: number; + tmp: Object; + content(type: string): HTMLElement[] | W2Object; + content(type: string, content: HTMLElement | Object, transition?: string): void; + el(type: string): HTMLElement; + get(type: string): W2Panel; + hide(type: string, immediate?: boolean): void; + hideTabs(type: string): void; + hideToolbar(type: string): void; + html(type: string): string; + html(type: string, content?: string | Object, transition?: string): void; + load(type: string, url: string, transition?: string, onLoad?: Function): void; + lock(panel: string, message: string, showSpinner?: boolean): void; + set(type: string, panel: Object): void; + show(type: string, immediate?: boolean): void; + showTabs(type: string): void; + showToolbar(type: string): void; + sizeTo(type: string, size: number): void; + toggle(type: string, immediate?: boolean): void; + toggleTabs(type: string): void; + toggleToolbar(type: string): void; + unlock(panel: string): void; + } + + module W2Grid { + interface Columns { } + interface Ranges { } + interface Records { } + } + + interface W2Grid extends W2Common { + autoLoad: boolean; + buttons: Object; + columnGroups: Object[]; + columns: Object[]; + fixedBody: boolean; + header: string; + keyboard: boolean; + last: Object; + limit: number; + markSearch: boolean; + menu: Object[]; + method: string; + msgAJAXerror: string; + msgDelete: string; + msgNotJSON: string; + msgRefresh: string; + multiSearch: boolean; + multiSelect: boolean; + multiSort: boolean; + offset: number; + parser: Function; + postData: Object; + ranges: Object[]; + recid: string; + recordHeight: number; + records: Object[]; + reorderColumns: boolean; + reorderRows: boolean; + routeData: string; + searchData: Object[]; + searches: Object[]; + selectType: string; + show: Object; + sortData: Object[]; + summary: Object[]; + toolbar: Object; + total: number; + url: string; + add(record: W2Grid.Records | W2Grid.Records[]): number; + addColumn(column: W2Grid.Columns | W2Grid.Columns[]): number; + addColumn(before: string | number, column: W2Grid.Columns | W2Grid.Columns[]): number; + addRange(range: W2Grid.Ranges | W2Grid.Ranges[]): number; + addSearch(search: Object | Object[]): number; + addSearch(before: string | number, search: Object | Object[]): number; + clear(noRefresh?: boolean): void; + click(recid: string, event?: Object): void; + collapse(recid: string): boolean; + columnClick(field: string, event?: Object): boolean; + columnOnOff(el: HTMLElement, event: Object, field: string, value: number): void; + contextMenu(recid: string, event?: Object): void; + copy(): string; + dblClick(recid: string, event?: Object): void; + delete(force: boolean): void; + editField(recid: string, column: number, value?: string, event?: Object): void; + error(msg: string): void; + expand(recid: string): boolean; + find(match: Object, returnIndex?: boolean): Object[] | number[]; + get(recid: string, returnIndex?: boolean): Object | number | void; + getCellHTML(index: number, columnIndex: number, summary?: boolean): string; + getCellValue(index: number, columnIndex: number, summary?: boolean): string; + getChanges(): Object[]; + getColumn(field: string, returnIndex?: boolean): Object | number | void; + getColumnsHTML(): string; + getFooterHTML(): string; + getRangeData(range: Object, extra?: boolean): Object[][]; + getRecordHTML(index: number, lineNumber: number, summary?: boolean): string; + getRecordsHTML(): string; + getSearch(field: string, returnIndex?: boolean): Object | number | void; + getSearchData(field: string): Object | void; + getSearchesHTML(): string; + getSelection(): Object[]; // the doc is weird here + getSummaryHTML(): string; + hideColumn(...fields: string[]): number; + hideSearch(...fields: string[]): number; + initAllField(field: string, value?: string): void; + initColumnOnOff(): void; + //initOperator(el, searchInd): void; // this is used internally + initResize(): void; + initSearches(): void; + initToolbar(): void; + keydown(event: Object): void; + load(url: string, callback?: Function): void; + localSearch(silent?: boolean): number; + localSort(silent?: boolean): number; + lock(message: string, showSpinner?: boolean): void; + menuClick(recid: string, index: number, event: Object): void; + mergeChanges(): void; + nextCell(colInd: number, editable: boolean): number | void; + nextRow(index: number): number | void; + parseField(obj: Object, field: string): any; + paste(text: string): void; + prevCell(colInd: number, editable: boolean): number | void; + prevRow(index: number): number | void; + refreshCell(recid: string, field: string): void; + refreshRanges(): number; + refreshRow(recid: string): void; + reload(callback?: Function): void; + remove(...recids: string[]): number; + removeColumn(...fields: string[]): number; + removeRange(...rangeNames: string[]): number; + removeSearch(...fields: string[]): number; + request(cmd: string, params?: Object, url?: string, callback?: Function): void; + requestComplete(status: string, cmd: string, callback?: Function): void; + reset(noRefresh?: boolean): void; + resizeBoxes(): void; + resizeRecords(): void; + save(): void; + scroll(event: Object): void; + scrollIntoView(ind: number): void; + search(field: string, value: string): void; + search(searches: Object[], logic?: string): void; + searchClose(): void; + searchOpen(): void; + searchReset(noRefresh?: boolean): void; + searchShowFields(): void; + select(...recids: string[]): number; + selectAll(): void; + selectNone(): void; + set(record: Object, noRefresh?: boolean): boolean; + set(recid: string, record: Object, noRefresh?: boolean): boolean; + showColumn(...fields: string[]): number; + showSearch(...fields: string[]): number; + skip(offset: number): number; + sort(): void; + sort(field: string, direction?: string, multiField?: boolean): void; + stateReset(): void; + stateRestore(stateObj?: Object): Object | void; + stateSave(returnOnly?: boolean): Object | void; + status(msg?: string): void; + toggle(recid: string): void; + toggleColumn(...fields: string[]): number; + toggleSearch(...fields: string[]): number; + toolbarAdd(): void; + toolbarDelete(force?: boolean): void; + unlock(): void; + unselect(...recids: string[]): number; + } + + interface W2Toolbar extends W2Common { + items: W2Item[]; + right: string; + routeData: string; + add(items: Object | Object[]): void; + check(...ids: string[]): number; + click(id: string, event?: Object): void; + disable(...ids: string[]): number; + enable(...ids: string[]): number; + get(id: string, returnIndex?: boolean): Object | number | void; + getItemHTML(item: Object): string; + hide(...ids: string[]): number; + insert(before: string, items: Object | Object[]): void; + menuClick(id: string, menuIndex: number, event?: Object): void; + remove(...ids: string[]): number; + set(id: string, item: Object): boolean; + show(...ids: string[]): number; + uncheck(...ids: string[]): number; + } + + interface W2Sidebar extends W2Common { + bottomHTML: string; + icon: string; + img: string; + keyboard: boolean; + menu: Object[]; + nodes: Object[]; + parent: W2Common; + routeData: string; + selected: string; + sidebar: Object; + topHTML: string; + add(nodes: Object | Object[]): Object; + add(parent: string, nodes: Object | Object[]): Object; + click(id: string, event?: Object): void; + collapse(id: string): void; + collapseAll(parent?: string): void; + contextMenu(id: string, event?: Object): void; + dblClick(id: string, event?: Object): void; + disable(...ids: string[]): number; + enable(...ids: string[]): number; + expand(id: string): void; + expandAll(parent?: string): void; + expandParents(id: string): void; + find(attrs: Object): Object[]; + find(parent: string, attrs: Object): Object[]; + get(): Object | number | void; + get(id: string, returnIndex?: boolean): Object | number | void; + get(parent: string, id: string, returnIndex?: boolean): Object | number | void; + hide(...ids: string[]): number; + insert(before: string | Object, nodes: Object | Object[]): Object; + insert(parent: string, before: string | Object, nodes: Object | Object[]): Object; + keydown(event: Object): void; + lock(message: string, showSpinner?: boolean): void; + menuClick(id: string, index: number, event?: Object): void; + remove(...ids: string[]): number; + scrollIntoView(id?: string): void; + select(id: string): void; + set(id: string, node: Object): boolean; + set(parent: string, id: string, node: Object): boolean; + show(...ids: string[]): number; + toggle(id: string): void; + unlock(): void; + unselect(id: string): boolean; + } + + interface W2Tabs extends W2Common { + active: string; + right: string; + routeData: string; + tabs: W2Tab[]; + add(tabs: Object | Object[]): void; + animateClose(id: string, event?: Object | Object[]): void; + animateInsert(before: string, tabs: Object | Object[]): void; + click(id: string, event?: Object): void; + disable(...ids: string[]): number; + enable(...ids: string[]): number; + get(id: string, returnIndex?: boolean): Object | number | void; + hide(...ids: string[]): number; + insert(before: string, tabs: Object | Object[]): void; + onClick(event: Object): void; + remove(...ids: string[]): number; + select(id: string): boolean; + set(id: string, tab: Object): boolean; + show(...ids: string[]): number; + } + + interface W2Form extends W2Common { + actions: Object; + fields: Object[]; + focus: number; + formHTML: string; + formURL: string; + header: string; + isGenerated: boolean; + last: Object; + msgAJAXerror: string; + msgNotJSON: string; + msgRefresh: string; + msgSaving: string; + original: Object; + page: number; + postData: Object; + recid: number; + record: Object; + routeData: string; + tabs: Object; + toolbar: Object; + url: string; + action(action: string, event?: Object): void; + clear(): void; + error(msg: string): void; + generateHTML(): string; + get(): Object | number | void; + get(field: string, returnIndex?: boolean): Object | number | void; + getChanges(): Object; + goto(page: number): void; + lock(message: string, showSpinner?: boolean): void; + reload(callback?: Function): void; + request(postData?: Object, callback?: Function): void; + save(postData?: Object, callback?: Function): void; + set(field: string, obj: Object): boolean; + submit(postData?: Object, callback?: Function): void; + unlock(): void; + validate(showErrors?: boolean): Object[]; + } + + interface W2Popup extends W2Common { + defaults: Object; + status: string; + clear(): void; + close(): void; + get(): Object; + keydown(event: Object): void; + load(options: Object): void; + lock(message: string, showSpinner?: boolean): void; + lockScreen(options?: Object): void; + max(): void; + message(msgOptions: Object): void; + min(): void; + open(options: Object): void; + reset(): void; + resize(): void; + resize(width?: number, height?: number, callback?: Function): number; + set(options: Object): void; + toggle(): void; + unlock(): void; + unlockScreen(): void; + } + +} From b6c5af384db31ca0a903017a381105d8d807c418 Mon Sep 17 00:00:00 2001 From: Valentin Robert Date: Mon, 7 Mar 2016 19:49:31 -0800 Subject: [PATCH 2/2] w2ui: fixed onClick issues --- w2ui/w2ui.d.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/w2ui/w2ui.d.ts b/w2ui/w2ui.d.ts index ef7e88c17..0b2943295 100644 --- a/w2ui/w2ui.d.ts +++ b/w2ui/w2ui.d.ts @@ -111,7 +111,7 @@ declare module W2UI { interface Records { } } - interface W2Grid extends W2Common { + interface W2Grid extends W2Common, W2OnClickable { autoLoad: boolean; buttons: Object; columnGroups: Object[]; @@ -250,7 +250,7 @@ declare module W2UI { unselect(...recids: string[]): number; } - interface W2Toolbar extends W2Common { + interface W2Toolbar extends W2Common, W2OnClickable { items: W2Item[]; right: string; routeData: string; @@ -270,7 +270,7 @@ declare module W2UI { uncheck(...ids: string[]): number; } - interface W2Sidebar extends W2Common { + interface W2Sidebar extends W2Common, W2OnClickable { bottomHTML: string; icon: string; img: string; @@ -316,7 +316,7 @@ declare module W2UI { unselect(id: string): boolean; } - interface W2Tabs extends W2Common { + interface W2Tabs extends W2Common, W2OnClickable { active: string; right: string; routeData: string; @@ -330,7 +330,6 @@ declare module W2UI { get(id: string, returnIndex?: boolean): Object | number | void; hide(...ids: string[]): number; insert(before: string, tabs: Object | Object[]): void; - onClick(event: Object): void; remove(...ids: string[]): number; select(id: string): boolean; set(id: string, tab: Object): boolean; @@ -400,4 +399,9 @@ declare module W2UI { unlockScreen(): void; } + interface W2OnClickable { + onClick(event: W2Event): void; + onClick(id: string, data: W2Event): void; + } + }